package com.dkd.manage.service.impl;
import java.util.List;
import java.util.stream.Collectors;

import cn.hutool.core.bean.BeanUtil;
import com.dkd.common.constant.DkdContants;
import com.dkd.common.constant.GenConstants;
import com.dkd.common.utils.DateUtils;
import com.dkd.manage.domain.TbTaskDetails;
import com.dkd.manage.domain.dto.TaskDetailsDto;
import com.dkd.manage.domain.dto.TaskDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import com.dkd.manage.mapper.TbTaskMapper;
import com.dkd.manage.domain.TbTask;
import com.dkd.manage.service.ITbTaskService;
/**
 * 运营工单Service业务层处理
 *
 * @author ruoyi
 * @date 2024-12-02
 */
@Service
public class TbTaskServiceImpl implements ITbTaskService {
    @Autowired
    private TbTaskMapper tbTaskMapper;
    @Autowired
    private TbTaskDetailsServiceImpl tbTaskDetailsServiceImpl;
    //新增一个方法，新增TaskDto todo : 这个方法待完善
    public Integer addTaskDto(TaskDto taskDto) {
        TbTask tbTask = new TbTask();
        BeanUtil.copyProperties(taskDto, tbTask);
        //获取工单类型
        Long productTypeId = taskDto.getProductTypeId();
        //判断是否补货工单
        if (productTypeId == DkdContants.TASK_TYPE_SUPPLY) {
            //获取工单详情
            List<TaskDetailsDto> details = taskDto.getDetails();
            //将数据流dto补货工单List，转换成List<taskDetail>
            List<TbTaskDetails> taskDetails = details.stream().map(taskDetailsDto -> {
                TbTaskDetails taskDetail = new TbTaskDetails();
                BeanUtil.copyProperties(taskDetailsDto, taskDetail);
                return taskDetail;
            }).collect(Collectors.toList());
            //批量新增补货详情
            tbTaskDetailsServiceImpl.batchInsertTbTaskDetails(taskDetails);
        } else {
        }
        Integer taskResult = tbTaskMapper.insertTbTask(tbTask);
        return taskResult;
    }
    /**
     * 查询运营工单
     *
     * @param taskId 运营工单主键
     * @return 运营工单
     */
    @Override
    public TbTask selectTbTaskByTaskId(Long taskId) {
        return tbTaskMapper.selectTbTaskByTaskId(taskId);
    }
    /**
     * 查询运营工单列表
     *
     * @param tbTask 运营工单
     * @return 运营工单
     */
    @Override
    public List<TbTask> selectTbTaskList(TbTask tbTask) {
        return tbTaskMapper.selectTbTaskList(tbTask);
    }
    /**
     * 新增运营工单
     *
     * @param tbTask 运营工单
     * @return 结果
     */
    @Override
    public int insertTbTask(TbTask tbTask) {
        tbTask.setCreateTime(DateUtils.getNowDate());
        return tbTaskMapper.insertTbTask(tbTask);
    }
    /**
     * 修改运营工单
     *
     * @param tbTask 运营工单
     * @return 结果
     */
    @Override
    public int updateTbTask(TbTask tbTask) {
        tbTask.setUpdateTime(DateUtils.getNowDate());
        return tbTaskMapper.updateTbTask(tbTask);
    }
    /**
     * 批量删除运营工单
     *
     * @param taskIds 需要删除的运营工单主键
     * @return 结果
     */
    @Override
    public int deleteTbTaskByTaskIds(Long[] taskIds) {
        return tbTaskMapper.deleteTbTaskByTaskIds(taskIds);
    }
    /**
     * 删除运营工单信息
     *
     * @param taskId 运营工单主键
     * @return 结果
     */
    @Override
    public int deleteTbTaskByTaskId(Long taskId) {
        return tbTaskMapper.deleteTbTaskByTaskId(taskId);
    }
}
